<?php

class AdminTurmasController extends Zend_Controller_Action 
{ 
	
	private $usuario;
	private $textosDAO;
	private $imagensDAO;
	private $turmasDAO;
	private $turmasTextosDAO;
	
	protected $_acl;
	protected $_session;
	
	
	
	public function init() {
		$config = Zend_Registry::get ( 'config' );
		$this->_acl = $this->getFrontController()->getParam('acl');
		$this->_session = new Zend_Session_Namespace ( $config->session->namespace );
		$this->usuario = $this->_session->storage;
		$this->turmasDAO = new Turmas();
		$this->textosDAO = new Textos();
		$this->imagensDAO = new Imagens();
		$this->turmasTextosDAO = new TurmasTextos();
		$this->view->aba = 'adminturmas';	
		if ( isset ( $this->usuario )) {
			$this->view->perfil = $this->usuario->perfil;
		}
	}
	
	public function preDispatch() {
	 if (!Zend_Auth::getInstance()->hasIdentity()) {
      	$this->view->logado = 0;
      	$this->_redirect('/login');
      } else {
      	$config = Zend_Registry::get ( 'config' );
      	$this->_session = new Zend_Session_Namespace ( $config->session->namespace );
		$this->_usuario = $this->_session->storage;
       	$this->view->logado = 1;
      }
	}
	
	public function indexAction() {
		
		$params = new Zend_Filter_Input(null, null, $this->getRequest()->getParams());
			

		if ($this->_acl->isAllowed ( $this->usuario->perfil, 'textos', 'ver' )) {
			
				
				 if($params->filtro && $params->ordem){  
					//$textos = $this->textosDAO->findByUsuario($this->usuario->id,'id desc');
					$filtro = $params->filtro;
					$ordem = $params->ordem;
					$turmas = $this->turmasDAO->findByProfessor($this->usuario->id,$filtro,$ordem);										
					
				 }
				 else{
				 	$turmas = $this->turmasDAO->findByProfessor($this->usuario->id,'nome_da_turma','asc');
				 	$ordem = 'asc';
				 }
			if(isset($ordem))
				$this->view->ordem = $ordem;
			
			$this->view->turmas = $turmas;
			
			
			$paginator = Zend_Paginator::factory($turmas);
			
			$paginator->setItemCountPerPage(10);
			$page = $this->_getParam('page');
			
			if ($page)
				$paginator->setCurrentPageNumber($this->_getParam('page'));
				
			$paginator->setPageRange(range(1,10));
			Zend_View_Helper_PaginationControl::setDefaultViewPartial("_partials/paginacao.phtml");
			
			$this->view->paginator = $paginator;

			$this->view->perfil = $this->usuario->perfil;
		
		} else {
			$this->_redirect ( './' ); //Disparar erro de acesso negado
		}
	}
	
	public function inserirAction() {
		$this->view->acao = 'cadastrar';
		$this->view->aba = 'adminturmas';
		$this->render('formulario');
	}
	
	
	public function editarAction() {
		$this->view->acao = 'editar';
		$params = new Zend_Filter_Input(null, null, $this->getRequest()->getParams());
		
		$turma = $this->turmasDAO->find($params->id)->current();
		
		$this->view->turma = $turma;
		

		$this->view->perfil = $this->usuario->perfil;
		
		$this->render('formulario');
	}
	
	
	public function removerturmadotextoAction() {
		
		$params = new Zend_Filter_Input(null, null, $this->getRequest()->getParams());
		
		$texto = $this->textosDAO->find($params->texto)->current();
		
		$this->view->texto = $texto;
		
		if($params->filtro && $params->ordem){  
		
			$filtro = $params->filtro;
			$ordem = $params->ordem;
			$turmas = $this->turmasDAO->findByProfessor($this->usuario->id,$filtro,$ordem);										
					
		}
		else{
			$turmas = $this->turmasDAO->findByProfessor($this->usuario->id,'nome_da_turma','asc');
			$ordem = 'asc';
		}
		
		if(isset($ordem))
				$this->view->ordem = $ordem;
				
		$publicado = $this->turmasTextosDAO;
		
		$this->view->texto = $texto;
		$this->view->turmas = $turmas;
		$this->view->publicado = $publicado;
			
		$paginator = Zend_Paginator::factory($turmas);
			
		$paginator->setItemCountPerPage(10);
		$page = $this->_getParam('page');
			
		if ($page)
			$paginator->setCurrentPageNumber($this->_getParam('page'));
				
		$paginator->setPageRange(range(1,10));
		Zend_View_Helper_PaginationControl::setDefaultViewPartial("_partials/paginacao.phtml");
			
		$this->view->paginator = $paginator;

		$this->view->perfil = $this->usuario->perfil;
		
		
		$this->turmasTextosDAO->deleteTurma($params->id,$params->texto);		
		
		$this->render('editarturmasdotexto');
	}
	
	public function publicarturmanotextoAction() {
		
		$params = new Zend_Filter_Input(null, null, $this->getRequest()->getParams());
		
		
		$turma = $this->turmasDAO->find($params->turma)->current();
		
		$this->view->turma = $turma;
		
		
		$dados = array(
			'id_turma' => $params->turma,
			'id_texto' => $params->id,
			'data_de_publicacao' => Zend_Date::now()->toString("Y/M/d H:m:s")
		);
		
		if($params->filtro && $params->ordem){  
		
			$filtro = $params->filtro;
			$ordem = $params->ordem;
			$textos = $this->textosDAO->findByUsuario($this->usuario->id,$filtro,$ordem);										
					
		}
		else{
			$textos = $this->textosDAO->findByUsuario($this->usuario->id,'titulo','asc');
			$ordem = 'asc';
		}
		
		if(isset($ordem))
				$this->view->ordem = $ordem;
				
		$publicado = $this->turmasTextosDAO;
		
		
		$this->view->textos = $textos;
		$this->view->publicado = $publicado;
			
		$paginator = Zend_Paginator::factory($textos);
			
		$paginator->setItemCountPerPage(10);
		$page = $this->_getParam('paginainicial');
		$this->view->paginainicial = $page;
		
		$this->view->countpage = $contador;
			
		if ($page)
			$paginator->setCurrentPageNumber($this->_getParam('paginainicial'));
				
		$paginator->setPageRange(range(1,10));
		Zend_View_Helper_PaginationControl::setDefaultViewPartial("_partials/paginacao.phtml");
			
		$this->view->paginator = $paginator;

		$this->view->perfil = $this->usuario->perfil;
		
		
			$params->id = $this->turmasTextosDAO->insert($dados);		
		
		$this->render('editartextosdaturma');
	}
	
	
	public function publicartextonaturmaAction() {
		
		$params = new Zend_Filter_Input(null, null, $this->getRequest()->getParams());
		
		
		$texto = $this->textosDAO->find($params->texto)->current();
		
		$this->view->texto = $texto;
		
		
		$dados = array(
			'id_turma' => $params->id,
			'id_texto' => $params->texto,
			'data_de_publicacao' => Zend_Date::now()->toString("Y/M/d H:m:s")
		);
		
		if($params->filtro && $params->ordem){  
		
			$filtro = $params->filtro;
			$ordem = $params->ordem;
			$turmas = $this->turmasDAO->findByProfessor($this->usuario->id,$filtro,$ordem);										
					
		}
		else{
			$turmas = $this->turmasDAO->findByProfessor($this->usuario->id,'nome_da_turma','asc');
			$ordem = 'asc';
		}
		
		if(isset($ordem))
				$this->view->ordem = $ordem;
				
		$publicado = $this->turmasTextosDAO;
		
		$this->view->texto = $texto;
		$this->view->turmas = $turmas;
		$this->view->publicado = $publicado;
			
		$paginator = Zend_Paginator::factory($turmas);
			
		$paginator->setItemCountPerPage(10);
		$page = $this->_getParam('page');
			
		if ($page)
			$paginator->setCurrentPageNumber($this->_getParam('page'));
				
		$paginator->setPageRange(range(1,10));
		Zend_View_Helper_PaginationControl::setDefaultViewPartial("_partials/paginacao.phtml");
			
		$this->view->paginator = $paginator;

		$this->view->perfil = $this->usuario->perfil;
		
		
			$params->id = $this->turmasTextosDAO->insert($dados);		
		
		$this->render('editarturmasdotexto');
	}
	
	
	public function editarturmasdotextoAction() {
		
		$this->view->acao = 'editarturmasdotexto';
		$params = new Zend_Filter_Input(null, null, $this->getRequest()->getParams());
		
		$texto = $this->textosDAO->find($params->id)->current();
		
		if($params->filtro && $params->ordem){  
		
			$filtro = $params->filtro;
			$ordem = $params->ordem;
			$turmas = $this->turmasDAO->findByProfessor($this->usuario->id,$filtro,$ordem);										
					
		}
		else{
			$turmas = $this->turmasDAO->findByProfessor($this->usuario->id,'nome_da_turma','asc');
			$ordem = 'asc';
		}
		
		if(isset($ordem))
				$this->view->ordem = $ordem;
		
		$publicado = $this->turmasTextosDAO;	

		
				
		$this->view->texto = $texto;
		$this->view->turmas = $turmas;
		$this->view->publicado = $publicado;
		
		$paginator = Zend_Paginator::factory($turmas);
			
		$paginator->setItemCountPerPage(10);
		$page = $this->_getParam('page');
			
		if ($page)
			$paginator->setCurrentPageNumber($this->_getParam('page'));
				
		$paginator->setPageRange(range(1,10));
		Zend_View_Helper_PaginationControl::setDefaultViewPartial("_partials/paginacao.phtml");
			
		$this->view->paginator = $paginator;

		$this->view->perfil = $this->usuario->perfil;
		
		$this->render('editarturmasdotexto');
	}
	
	
	public function editartextosdaturmaAction() {
		
		$this->view->acao = 'editartextosdaturma';
		$params = new Zend_Filter_Input(null, null, $this->getRequest()->getParams());
		
		$turma = $this->turmasDAO->find($params->id)->current();
		
		if($params->filtro && $params->ordem){  
		
			$filtro = $params->filtro;
			$ordem = $params->ordem;
			$textos = $this->textosDAO->findByUsuario($this->usuario->id,$filtro,$ordem);										
					
		}
		else{
			$textos = $this->textosDAO->findByUsuario($this->usuario->id,'titulo','asc');
			$ordem = 'asc';
		}
		
		if(isset($ordem))
				$this->view->ordem = $ordem;
		
		$publicado = $this->turmasTextosDAO;	

		
				
		$this->view->textos = $textos;
		$this->view->turma = $turma;
		$this->view->publicado = $publicado;
		
		$paginator = Zend_Paginator::factory($textos);
			
		$paginator->setItemCountPerPage(10);
		$page = $this->_getParam('page');
			
		if ($page)
			$paginator->setCurrentPageNumber($this->_getParam('page'));
				
		$paginator->setPageRange(range(1,10));
		Zend_View_Helper_PaginationControl::setDefaultViewPartial("_partials/paginacao.phtml");
			
		$this->view->paginator = $paginator;

		$this->view->perfil = $this->usuario->perfil;
		
		$this->render('editartextosdaturma');
	}
	

	public function salvarAction() {
		
		if (! $this->getRequest ()->isPost ()) {
			return $this->_forward ( 'index' );
		}
		
		$params = new Zend_Filter_Input(null, null, $this->getRequest()->getParams());
		
		$validatorNome = new Zend_Validate();
		$validatorNome->addValidator(new Valida_NaoVazio("nome_da_turma"));
 		
				
		if ( !$validatorNome->isValid($params->nome_da_turma) ) {
			print_r($validatorNome->getMessages());
			
			exit();
			/* @todo Error handle */
		}
		//$dataAtual = new Zend_Date( '31/01/2010 00:00:01' );
		
		$dataAtual = new Zend_Date();
		
		 
		//$dataFinal = $dataAtual->add('1',Zend_Date::MONTH);
		$dados = array(
		'id' => $params->id,
		'nome_da_turma' => $params->nome_da_turma,
		'data_inicio' => Zend_Date::now()->toString($params->data_inicio." 00:00:00"),
		'data_fim' => Zend_Date::now()->toString($params->data_fim." 23:59:59"),
		'id_professor' => $this->usuario->id,
		'ativa' => "sim"
		);
	
		if ($params->id){  
			$this->turmasDAO->update($dados, "id = $params->id");
			$this->view->acao = 'editar';	
		}
		else{
			
			$params->id = $this->turmasDAO->insert($dados);		
		}

		$turma = $this->turmasDAO->find($params->id)->current();
		$this->view->turma = $turma; 
		$imgs = $this->imagensDAO->fetchAll("id_texto = $params->id");
		$contador = count($imgs);
		$this->view->contador = $contador;
		$this->view->imgs = $imgs;
		
		if($this->view->acao == 'editar'){
			$this->view->acao = 'editar';
			$this->view->aba = 'adminturmas';
		}
		else{
			$this->view->acao = 'inserir';
			$this->view->aba = 'adminturmas';
		}
		//$this->render('imagens');	
		$this->_redirect('adminturmas');
		
	}
	
	public function apagarAction() {
		$params = new Zend_Filter_Input(null, null, $this->getRequest()->getParams());
		
		$this->turmasDAO->delete($params->id);
		$this->_redirect("adminturmas");
	}
	
	
}  